diff options
| author | Frank <[email protected]> | 2026-01-13 19:51:48 -0500 |
|---|---|---|
| committer | Frank <[email protected]> | 2026-01-13 19:51:48 -0500 |
| commit | 6fe265e7d804a92d91a02ae93817ad50546cd656 (patch) | |
| tree | ff59578d0b0df26047ea705c3c3e9384f785f19a /packages/console/app/src/routes/auth/[...callback].ts | |
| parent | f242541ef3eb2cfea59d9bd79d2977aec79e7666 (diff) | |
| parent | 2aed4d263b4873c3085acdcbcf871a8dadaf392e (diff) | |
| download | opencode-6fe265e7d804a92d91a02ae93817ad50546cd656.tar.gz opencode-6fe265e7d804a92d91a02ae93817ad50546cd656.zip | |
Merge branch 'zen-black' into dev
Diffstat (limited to 'packages/console/app/src/routes/auth/[...callback].ts')
| -rw-r--r-- | packages/console/app/src/routes/auth/[...callback].ts | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/packages/console/app/src/routes/auth/[...callback].ts b/packages/console/app/src/routes/auth/[...callback].ts new file mode 100644 index 000000000..36a9c5194 --- /dev/null +++ b/packages/console/app/src/routes/auth/[...callback].ts @@ -0,0 +1,41 @@ +import { redirect } from "@solidjs/router" +import type { APIEvent } from "@solidjs/start/server" +import { AuthClient } from "~/context/auth" +import { useAuthSession } from "~/context/auth" + +export async function GET(input: APIEvent) { + const url = new URL(input.request.url) + + try { + const code = url.searchParams.get("code") + if (!code) throw new Error("No code found") + const result = await AuthClient.exchange(code, `${url.origin}${url.pathname}`) + if (result.err) throw new Error(result.err.message) + const decoded = AuthClient.decode(result.tokens.access, {} as any) + if (decoded.err) throw new Error(decoded.err.message) + const session = await useAuthSession() + const id = decoded.subject.properties.accountID + await session.update((value) => { + return { + ...value, + account: { + ...value.account, + [id]: { + id, + email: decoded.subject.properties.email, + }, + }, + current: id, + } + }) + return redirect(url.pathname === "/auth/callback" ? "/auth" : url.pathname.replace("/auth/callback", "")) + } catch (e: any) { + return new Response( + JSON.stringify({ + error: e.message, + cause: Object.fromEntries(url.searchParams.entries()), + }), + { status: 500 }, + ) + } +} |
